package com.lai.hospital.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.lai.hospital.dto.AppointmentDTO;
import com.lai.hospital.dto.ConfirmAppointmentDTO;
import com.lai.hospital.dto.MedicalInfoDTO;
import com.lai.hospital.entity.Appointment;
import com.lai.hospital.entity.Patient;
import com.lai.hospital.vo.AppointmentVO;
import com.lai.hospital.vo.ConditionVO;
import com.lai.hospital.vo.PageResult;

import java.util.List;

/**
 * @author : lai
 * @version V1.0
 * @Project: hospital-springboot
 * @Package com.lai.hospital.service
 * @Description: 预约服务
 * @date Date : 2022年11月27日 23:43
 */
public interface AppointmentService extends IService<Appointment> {
    /**
     *  分页获取预约列表
     * @param conditionVO 查询条件
     * @return
     */
    PageResult<AppointmentDTO> listAppointment(ConditionVO conditionVO);

    /**
     *  根据医生id分页获取预约列表
     * @param conditionVO 查询条件
     * @return
     */
    PageResult<AppointmentDTO> listAppointmentByDoctorId(ConditionVO conditionVO);

    /**
     * 删除预约信息
     * @param id 预约id
     */
    void deleteAppointment(Integer id);


    /**
     * 根据患者id获取就诊信息列表
     * @param patientId 患者id
     * @return
     */
    List<MedicalInfoDTO> listAppointmentByPatientId(Integer patientId);

    /**
     * 根据患者id获取就诊信息列表
     * @param conditionVO 查询条件
     * @return
     */
    List<AppointmentDTO> listAppointmentByUserId(ConditionVO conditionVO);

    /**
     * 取消预约
     * @param id 预约id
     * @return
     */
    void cancelAppointment(Integer id);


    /**
     * 用户预约
     * @return
     */
    AppointmentVO saveAppointment(AppointmentVO appointmentVO);
    /**
     * 根据id获取预约信息
     * @param id id
     * @return
     */
    AppointmentDTO getAppointmentById(Integer id);



}
